[C] Manipulação de vetores/ponteiros

Publicado por Enzo de Brito Ferber (última atualização em 15/09/2010)

[ Hits: 11.202 ]

Homepage: http://www.maximasonorizacao.com.br

Download vet.c




Programa que mistura a manipulação de vetores e ponteiros para criar um vetor C baseado em outros 2 vetores A e B. O vetor C conterá todos os elementos de A mais os elementos não repetidos de B.

  



Esconder código-fonte

// vet.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define ELEMENTS         5
#define COMB             10

#define TRUE             1
#define FALSE            0

int *geraVet( int a[], int b[] )
{
     register int i, j;
     int found;
     
     // o maximo de elementos que o vetor pode ter é COMB ( a + b ), 
     // caso nenhum dos elementos sejam repetidos
     int *c = (int *) malloc( COMB * sizeof( int ));
     int *d;
     
     // check de memoria
     if ( !c ) return NULL;
     
     /* PONTEIROS
      * ---------
      * 
      * O uso de ponteiros é melhor para não causar problemas 
      * no retorno da funçao, e também possibilitam uma manipulação
      * melhor dos dados.
      *
      */
     
     // inicializa o vetor
     for( i = 0; i < COMB; i++ )
          c[ i ] = 0;
     
     // copia dos elementos do primeiro vetor
     for( i = 0; i < ELEMENTS; i++ )
          c[ i ] = a[ i ];
     
     // 'd' é usado como referencia para o proximo endereço vazio do ponteiro 'c'
     d = c + ELEMENTS;
     
     // copia com comparação de repetição
     for( j = 0; j < ELEMENTS; j++ )
     {
          // variavel de controle
          found = FALSE;
          
          // loop de comparação
          for( i = 0; i < ELEMENTS; i++ )
               if ( b[j] == c[i] ) found = TRUE;
               
          // se o elemento nao for repetido, a copia é feita.
          if ( !found) *(d++) = b[j];
     }
     
     // retorno do endereço do ponteiro
     return c;
}

int main( int argc, char *argv[] )
{
     // vetores de teste
     int a[] = { 1, 2, 3, 4, 5  };
     int b[] = { 2, 3, 4, 5, 6  };
     int c[] = { 5, 6, 7, 8, 9  };
     int d[] = { 6, 7, 8, 9, 10 };
     
     // retorno
     int *ret;
     
     // controladores de loop
     register int i;
     
     /* COMBINAÇÕES:
      *
      * A - B       B - C     
      * A - C       B - D
      * A - D       C - D
      */
      
     // combinação
     ret = geraVet( a, b );
     
     // impressão do vetor
     for( i = 0; i < COMB; i++ )
          printf( "ret[ %2d ]: %2d\n", i, ret[ i ]);
     
     // fim do programa
     return 0;
}

Scripts recomendados

Calcula Força Gravitacional

Fatorial Recursivo

Par ou ímpar?

Aula basica de C

Administraçao de um teatro


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts